home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
language
/
parallax
/
mac_sit.hqx
/
Parallaxis 2.11
/
rot.p
< prev
next >
Wrap
Text File
|
1991-08-23
|
2KB
|
90 lines
SYSTEM image_rotation;
CONST m_size = 8;
CONFIGURATION Pic [m_size],[m_size];
CONNECTION right : Pic [i, j] -> Pic [i, j+1].left;
left : Pic [i, j] -> Pic [i, j-1].right;
up : Pic [i, j] -> Pic [i+1, j].down;
down : Pic [i, j] -> Pic [i-1, j].up;
SCALAR pic_size, size2: INTEGER;
i,j : INTEGER;
picture : ARRAY [0..m_size-1],[0..m_size-1] OF INTEGER;
VECTOR color, buffer,b2: INTEGER;
x,y : INTEGER;
BEGIN
(* init *)
pic_size := m_size;
(* create test pattern *)
FOR i:=0 TO m_size-1 DO
FOR j:=0 TO m_size-1 DO
picture[i,j] := 0
END;
END;
FOR i:=0 TO m_size-1 DO
picture[i,i] := 1;
END;
FOR i:=1 TO 5 DO
picture[0,i] := 1;
picture[i,0] := 1;
END;
(* print original image *)
WriteLn;
WriteString(" ORIGINAL IMAGE");
WriteLn;
FOR i:=m_size-1 TO 0 BY -1 DO
FOR j:=0 TO m_size-1 DO
WriteInt(picture[i,j],2)
END;
WriteLn;
END;
LOAD(color, picture);
WHILE pic_size > 1 DO
size2 := pic_size DIV 2;
PARALLEL
y := DIM1 MOD pic_size;
x := DIM2 MOD pic_size;
buffer := color;
IF x < size2 THEN PROPAGATE.up ^size2 (buffer);
(* Upper Left Quadrant *)
IF y>=size2 THEN b2 := buffer END
ELSE PROPAGATE.down^size2 (buffer);
(* Lower Right Quadrant *)
IF y< size2 THEN b2 := buffer END
END;
buffer := color;
IF y < size2 THEN PROPAGATE.left ^size2 (buffer);
(* Lower Left Quadrant *)
IF x< size2 THEN b2 := buffer END
ELSE PROPAGATE.right^size2 (buffer);
(* Upper Right Quadrant *)
IF x>=size2 THEN b2 := buffer END
END;
color := b2; (* copy new value *)
ENDPARALLEL;
pic_size := size2;
STORE(color, picture);
(* print image *)
WriteLn;
FOR i:=m_size-1 TO 0 BY -1 DO
FOR j:=0 TO m_size-1 DO
WriteInt(picture[i,j],2)
END;
WriteLn;
END
END; (* while *)
WriteString(" FINAL IMAGE");
END image_rotation.